1. Field of the Invention
The present invention relates in general to agent computer programs, including mobile agents, intelligent agents, collaborating agents, internet agents, and task-specific agents, and more particularly to a communication infrastructure for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers.
2. Description of the Related Art
Java virtual machines are rapidly becoming available on all kinds of computing platforms, from portables to desktops to workstations to mainframes. For the first time in computing history, there may soon be available a virtual, homogeneous platform for distributed and parallel computing on a global scale. The basic elements of this computing platform are distributed Java objects. Prior to JDK 1.1 [The Java Development Kit (JDK), URL=http://java.sun.com/products/jdk], one had to use the low-level socket-based class library (java.net package) for communication between distributed Java objects. With JDK 1.1, one can now use Java RMI (Remote Method Invocation) for direct method invocation between Java distributed objects. Java RMI raises the level of communication to that of objects, and it can pass objects by value using Java object Serialization. However, Java RMI is stationary (remote objects), rigid (predefined methods calls), point-to-point, and connection-oriented. Therefore, it is still too low-level and inflexible for direct use in many applications, such as agent-based applications.
The term xe2x80x9cagentxe2x80x9d has been used to mean different things in different contexts [D. Chess, B. Grosof, C. Harrison, D. Levine, C. Paris, and G. Tsudik, xe2x80x9cItinerant Agents for Mobile Computingxe2x80x9d, IBM Research Report, RC 20010, IBM Research Division, March 1995; C. Harrison, D. Chess, and A. Kershenbaum, xe2x80x9cMobile Agents: Are they a good idea?xe2x80x9d, IBM Research Report, IBM Research Division, March 1995.]xe2x80x94from intelligent agents to internet agents to mobile agents to task-specific agents to user agents, just to name a few. A key, distinct characteristic of agents, from our perspective, is that agents are autonomous. An agent has its own identity, thread of execution, and lifecycle. It is this characteristic that makes the agent system, and specifically Java agent system, a unique, flexible and powerful paradigm for distributed and parallel computing [D. T. Chang and D. B. Lange, xe2x80x9cMobile Agents: A New Paradigm for Distributed Object Computing on the WWWxe2x80x9d, in Proceedings of the OOPSLA96 Workshop: Toward the Integration of WWW and Distributed Object Technology, October, 1996; MA ""97 (First International Workshop on Mobile Agents 97), URL=http:www.informatik.uni-stuttgart.de/ipvr/vs/ws/ma97/ma97.html].
Given that Java agents are autonomous and can be executing independently on various Java virtual machines throughout a vast computer network, what makes them useful and powerful in carrying out parallel and distributed computing is that they must be able to communicate with each other in a dynamic and flexible fashion: the mechanism must allow agents to communicate when one of the agents moves to a different address space (mobile agents), when they must communicate at a higher level than methods calls (intelligent agents), when they need to communicate as a group (collaborating agents), and when a part of computer network is down or one of the agents is not available (disconnected operation).
Most of the currently available Java agent systems have focused their support on agent mobility. They provide limited support for inter-agent communication. Among these, Voyager [Voyager, ObjectSpace, URL=http://www.objectspace.com/Voyager/voyager.html; xe2x80x9cVoyager Core Package Technical Overviewxe2x80x9d, ObjectSpace, March, 1997], Concordia [Concordia, Mitsubishi Electric ITA, URL=http://www.meitca.com/HSL/Projects/Concordia; xe2x80x9cConcordia: An Infrastructure for Collaborating Mobile Agentsxe2x80x9d, Mitsubishi Electric ITA, in First International Workshop on Mobile Agents 97 (MA ""97), April, 1997; xe2x80x9cMobile Agent Computingxe2x80x9d, A White Paper, Mitsubishi Electric ITA, Feb. 28, 1997], and Aglets [Aglets Workbench, IBM, URL=http:/Hwww.trl.ibm.co.jp/aglets] are the best known.
Voyager defines the notion of a virtual object, which is basically a proxy to a remote object. In Voyager any object can be virtualized using a program called vc, which is a utility for converting regular classes to virtual classes. Messages are sentxe2x80x94via method callsxe2x80x94to remote objects through their local virtual references. Voyager messages can be sent in a synchronous, deferred, or asynchronous (one-way) mode. Object mobility is achieved through sending a xe2x80x9cmovexe2x80x9d message to a remote object.
Concordia supports two types of asynchronous distributed events for inter-agent communication: selected events and group-oriented events. In the select-event messaging, an agent registers the type of events it would like to receive with an event manager. When the event manager receives an event of the registered type it forwards the event to the registered agent. Concordia also supports group-oriented events. An agent can join a group of agents. When one of the agents initiates an event, the event is forwarded to all the agents in the group. Agent mobility is achieved through the use of itineraries, which involves message passing between collaborating Concordia servers.
In Aglets, agents can communicate with each other by sending messages through their proxies. The messages can be sent in a synchronous or deferred mode. Agent mobility is achieved by directly dispatching an agent (through its proxy) or through the use of itineraries. This involves message passing between collaborating agent contexts using the agent transfer protocol.
CORBA [The Common Object Request Broker: Architecture and Specification, Revision 2.0, OMG, July 1995] provides an architecture for stationary objects to communicate with each other in a distributed and heterogeneous environment. It defines a framework for remote method invocation using the IIOP (Internet Inter-ORB Protocol). Under the cover this involves sending request messages and receiving response messages between collaborating hosts.
KQML is a language of communication for intelligent agents. KQML is based on using primitives called performatives. Performatives define permissible actions or operations that agents use for communication. A performative has a name (which specifies what the performative means) and the following fields: sender, receiver, language (language of actual communication: prolog, SQL etc.), ontology (term definitions for the content), correlation id, and content.
JavaSpace [xe2x80x9cJavaSpace Specificationxe2x80x9d, Revision 0.3, Sun Microsystems, Inc. March 1997] is a Java adaptation for the internet of the pattern-matching shared memory paradigm provided by Linda [N. Carriero and D. Gelernter, xe2x80x9cLinda in Contextxe2x80x9d, Communications of the ACM., 32(4), pp. 444-458, April, 1989].
Conventional methods have failed to provide a uniform, flexible and robust underlying communication infrastructure for agent systems for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers. Thus, there is a clearly felt need for a method of, system for, and computer program product for, providing a flexible and robust underlying communication infrastructure for agent systems for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers.
A communication infrastructure providing communication between agents, between agents and agent-hosting servers, and between agent-hosting servers. The infrastructure meets technical requirements for flexibility and robustness: extensible types of messages, asynchronous and synchronous message passing, queuing, disconnected operation, inter-agent communication, and inter-agent-server communication. The communication infrastructure consists of three layers (from bottom to top): Mail Facility Layer, Message Facility Layer, and Agent Management Communication Facility Layer. The communication infrastructure has an open architecture in that a lower layer is designed to be more general than upper layers and can be used independent of the upper layers. Each upper layer, however, is designed to use and depends on the lower layers. The Mail Facility Layer is the lowest layer providing a general, semantics-free mail paradigm for asynchronous communication between distributed objects, whether they are local or remote to each other. The Mail Facility Layer provides a level of abstraction in terms of mail, virtual mailbox, post office, and mail queue, and hides the details of implementation and actual transport. It is designed to provide location transparency and to be implementable using various transport protocols. The next Message Facility Layer provides a typed messaging paradigm for asynchronous and synchronous message passing between distributed objects, whether they are local or remote to each other. The Message Facility Layer uses the Mail Facility Layer for sending messages and, where appropriate, for getting responses to requests sent. It allows for the association of typed message handlers with typed messages such that the format and semantics of messages are encapsulated through their types, are extensible, and can be processed by the associated message handlers. The Agent Management Communication Facility Layer is the highest layer providing the services for inter-agent communication between agents, agent-agent-server communication between an agent and an agent server, and inter-agent-server communication between agent servers for managing agents such as locating an agent, dispatching an agent, retrieving an agent, etc. The key abstractions provided in this layer include agent manager, agent, and agent identifier. It uses the Message Facility Layer and Mail Facility Layer to carry out the communication.
The present invention has the advantage of providing a flexible and robust underlying communication infrastructure for agent systems for communication between agents, between agents and agent-hosting servers, and between agent-hosting servers.
The present invention has the further advantage of providing extensible types of messages.
The present invention has the further advantage of providing asynchronous and synchronous message passing.
The present invention has the further advantage of providing queuing of message passing.
The present invention has the further advantage of providing disconnected operation for inter-agent communication and inter-agent-server communication.
The present invention has the further advantage of allowing implementations of various messaging paradigms to support distributed objects and agent mobility.
The present invention has the further advantage of allowing implementations of various abstractions to be easily be built on top of the Mail Facility Layer, and facilitating multiple protocol implementations through the Mail Facility Layer.